﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq.Expressions;
using GrayParrot.Web.Controls;
using GrayParrot.Core.Filters;
using FimetContoDeposito.DAL;
using FimetContoDeposito.BLL.Objects;

namespace FimetContoDeposito.BLL.ResultSets
{
    public class MagazzinoResultSet : ResultSet<SituazioneMagazzino>
	{
        public MagazzinoResultSet(DTParameters param, IQueryable<SituazioneMagazzino> result)
            : base(param, result)
        {
        }

        public override Expression<Func<SituazioneMagazzino, bool>> ApplyGeneralFilter(string searchPattern)
        {
            var predicate = PredicateBuilder.False<SituazioneMagazzino>();

            if (!string.IsNullOrWhiteSpace(searchPattern))
            {
                predicate = predicate.Or(im => im.Articolo != null && im.Articolo.ToString().Contains(searchPattern));
                predicate = predicate.Or(im => im.Giacenza != null && im.Giacenza.ToString().Contains(searchPattern));
                predicate = predicate.Or(im => im.Prenotata != null && im.Prenotata.ToString().Contains(searchPattern));
                predicate = predicate.Or(im => im.DataCancellazione != null && im.DataCancellazione.ToString().Contains(searchPattern));
            }

            return predicate;
        }

        public override Expression<Func<SituazioneMagazzino, bool>> ApplyGeneralColumnsFilter(List<string> columnSearch)
        {
            var predicate = PredicateBuilder.True<SituazioneMagazzino>();

            Guid m_id = GrayParrot.Extensions.Types.TypeExtensions.GetValueOrDefault<Guid>(columnSearch[ColumnIndex]);
            string m_articolo = columnSearch[ColumnIndex];

            if (!string.IsNullOrWhiteSpace(m_articolo))
            {
                predicate = predicate.And(im => im.Articolo.Contains(m_articolo));
            }

            return predicate;
        }
	}
}
